home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / TARCHIV.ZIP / GADGETS.PAS < prev    next >
Pascal/Delphi Source File  |  1995-01-27  |  4KB  |  233 lines

  1. {************************************************}
  2. {                                                }
  3. {                                                }
  4. {************************************************}
  5.  
  6. unit Gadgets;
  7.  
  8. {$F+,O+,S-,D-}
  9.  
  10. { Useful gadgets: clock,heap,number,text viewer }
  11.  
  12. interface
  13.  
  14. uses Dos, Objects, Views, App;
  15.  
  16. type
  17.   PHeapView = ^THeapView;
  18.   THeapView = object(TView)
  19.     OldMem : LongInt;
  20.     constructor Init(var Bounds: TRect);
  21.     procedure Draw; virtual;
  22.     procedure Update;
  23.   end;
  24.  
  25.   PNumView = ^TNumView;
  26.   TNumView = object(TView)
  27.     OldNum : Word;
  28.     constructor Init(var Bounds: TRect);
  29.     procedure Draw; virtual;
  30.     procedure Update (NewNum : Word);
  31.   end;
  32.  
  33.   PFlagView = ^TFlagView;
  34.   TFlagView = object(TView)
  35.     OldFlag : Boolean;
  36.     constructor Init(var Bounds: TRect);
  37.     procedure Draw; virtual;
  38.     procedure Update (NewFlag : Boolean);
  39.   end;
  40.  
  41.   PTextView = ^TTextView;
  42.   TTextView = object(TView)
  43.     OldText : String;
  44.     constructor Init(var Bounds: TRect);
  45.     procedure Draw; virtual;
  46.     procedure Update (NewText : String);
  47.   end;
  48.  
  49.   PClockView = ^TClockView;
  50.   TClockView = object(TView)
  51.     Refresh: Byte;
  52.     LastTime: DateTime;
  53.     TimeStr: string[16];
  54.     constructor Init(var Bounds: TRect);
  55.     procedure Draw; virtual;
  56.     function FormatTimeStr(H, M, S: Word): String; virtual;
  57.     procedure Update; virtual;
  58.   end;
  59.  
  60.  
  61. implementation
  62.  
  63. uses Drivers;
  64.  
  65. {------ Heap Window object ----------}
  66.  
  67. constructor THeapView.Init(var Bounds: TRect);
  68. begin
  69.   TView.Init(Bounds);
  70.   OldMem := 0;
  71. end;
  72.  
  73. procedure THeapView.Draw;
  74. var
  75.   S: String;
  76.   B: TDrawBuffer;
  77.   C: Byte;
  78. begin
  79.   OldMem := MemAvail;
  80.   Str(OldMem:Size.X, S);
  81.   C := GetColor(2);
  82.   MoveChar(B, ' ', C, Size.X);
  83.   MoveStr(B, S, C);
  84.   WriteLine(0, 0, Size.X, 1, B);
  85. end;
  86.  
  87.  
  88. procedure THeapView.Update;
  89. begin
  90.   if (OldMem <> MemAvail) then DrawView;
  91. end;
  92.  
  93. { ---- Number viewer --- }
  94.  
  95. constructor TNumView.Init(var Bounds: TRect);
  96. begin
  97.   TView.Init(Bounds);
  98.   OldNum := 0;
  99. end;
  100.  
  101. procedure TNumView.Draw;
  102. var
  103.   S: String;
  104.   B: TDrawBuffer;
  105.   C: Byte;
  106. begin
  107.   Str(OldNum:Size.X, S);
  108.   C := GetColor(2);
  109.   MoveChar(B, ' ', C, Size.X);
  110.   MoveStr(B, S, C);
  111.   WriteLine(0, 0, Size.X, 1, B);
  112. end;
  113.  
  114. procedure TNumView.Update (NewNum : Word);
  115. begin
  116.  If NewNum<>OldNum Then Begin
  117.   OldNum := NewNum;
  118.   DrawView;
  119.  End;
  120. end;
  121.  
  122. { ---- Text viewer --- }
  123.  
  124. constructor TTextView.Init(var Bounds: TRect);
  125. begin
  126.   TView.Init(Bounds);
  127.   OldText := '';
  128. end;
  129.  
  130. procedure TTextView.Draw;
  131. var
  132.   B: TDrawBuffer;
  133.   C: Byte;
  134. begin
  135.   C := GetColor(2);
  136.   MoveChar(B, ' ', C, Size.X);
  137.   MoveStr(B, OldText, C);
  138.   WriteLine(0, 0, Size.X, 1, B);
  139. end;
  140.  
  141. procedure TTextView.Update (NewText : String);
  142. begin
  143.  If NewText<>OldText Then Begin
  144.   OldText := NewText;
  145.   DrawView;
  146.  End;
  147. end;
  148.  
  149. { ---- Flag viewer --- }
  150.  
  151. constructor TFlagView.Init(var Bounds: TRect);
  152. begin
  153.   TView.Init(Bounds);
  154.   OldFlag := False;
  155. end;
  156.  
  157. procedure TFlagView.Draw;
  158. var
  159.   S: String;
  160.   B: TDrawBuffer;
  161.   C: Byte;
  162. begin
  163.   If OldFlag Then S:='(√)' Else S:='( )';
  164.   C := GetColor(2);
  165.   MoveChar(B, ' ', C, Size.X);
  166.   MoveStr(B, S, C);
  167.   WriteLine(0, 0, Size.X, 1, B);
  168. end;
  169.  
  170. procedure TFlagView.Update (NewFlag : Boolean);
  171. begin
  172.  If NewFlag<>OldFlag Then Begin
  173.   OldFlag := NewFlag;
  174.   DrawView;
  175.  End;
  176. end;
  177.  
  178. {-------- ClockView Object --------}
  179.  
  180. function LeadingZero(w: Word): String;
  181. var s: String;
  182. begin
  183.   Str(w:0, s);
  184.   LeadingZero := Copy('00', 1, 2 - Length(s)) + s;
  185. end;
  186.  
  187. constructor TClockView.Init(var Bounds: TRect);
  188. begin
  189.   TView.Init(Bounds);
  190.   FillChar(LastTime, SizeOf(LastTime), #$FF);
  191.   TimeStr := '';
  192.   Refresh := 1;
  193. end;
  194.  
  195.  
  196. procedure TClockView.Draw;
  197. var
  198.   B: TDrawBuffer;
  199.   C: Byte;
  200. begin
  201.   C := GetColor(2);
  202.   MoveChar(B, ' ', C, Size.X);
  203.   MoveStr(B, TimeStr, C);
  204.   WriteLine(0, 0, Size.X, 1, B);
  205. end;
  206.  
  207.  
  208. procedure TClockView.Update;
  209. var
  210.   h,m,s,hund: word;
  211. begin
  212.   GetTime(h,m,s,hund);
  213.   if Abs(s - LastTime.sec) >= Refresh then
  214.   begin
  215.     with LastTime do
  216.     begin
  217.       Hour := h;
  218.       Min := m;
  219.       Sec := s;
  220.     end;
  221.     TimeStr := FormatTimeStr(h, m, s);
  222.     DrawView;
  223.   end;
  224. end;
  225.  
  226. function TClockView.FormatTimeStr(H, M, S: Word): String;
  227. begin
  228.   FormatTimeStr := LeadingZero(h)+ ':'+ LeadingZero(m) +
  229.     ':' + LeadingZero(s);
  230. end;
  231.  
  232. end.
  233.